home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Graphics Programming (2nd Edition)
/
Visual Basic Graphics Programming 2nd Edition.iso
/
OldSrc
/
CH6
/
SRC
/
SPIRAL2.FRM
< prev
next >
Wrap
Text File
|
1996-04-24
|
6KB
|
229 lines
VERSION 4.00
Begin VB.Form Spiral2Form
Caption = "Spiral 2"
ClientHeight = 5670
ClientLeft = 2085
ClientTop = 735
ClientWidth = 4830
Height = 6360
Left = 2025
LinkTopic = "Form1"
ScaleHeight = 378
ScaleMode = 3 'Pixel
ScaleWidth = 322
Top = 105
Width = 4950
Begin VB.TextBox ThetaText
Height = 285
Left = 4200
TabIndex = 11
Text = "45"
Top = 480
Width = 615
End
Begin VB.TextBox YscaleText
Height = 285
Left = 2160
TabIndex = 9
Text = "1.5"
Top = 480
Width = 615
End
Begin VB.TextBox XscaleText
Height = 285
Left = 600
TabIndex = 7
Text = "0.7"
Top = 480
Width = 615
End
Begin VB.TextBox DtText
Height = 285
Left = 2160
TabIndex = 6
Text = "0.1"
Top = 45
Width = 615
End
Begin VB.TextBox TminText
Height = 285
Left = 0
TabIndex = 4
Text = "0"
Top = 45
Width = 615
End
Begin VB.CommandButton CmdGo
Caption = "Go"
Default = -1 'True
Height = 375
Left = 4200
TabIndex = 3
Top = 0
Width = 615
End
Begin VB.TextBox TmaxText
Height = 285
Left = 1200
TabIndex = 2
Text = "18.85"
Top = 45
Width = 615
End
Begin VB.PictureBox Canvas
AutoRedraw = -1 'True
Height = 4815
Left = 0
ScaleHeight = -2.2
ScaleLeft = -1.1
ScaleMode = 0 'User
ScaleTop = 1.1
ScaleWidth = 2.2
TabIndex = 0
Top = 840
Width = 4815
End
Begin VB.Label Label1
Caption = "Angle (degrees)"
Height = 255
Index = 5
Left = 3000
TabIndex = 12
Top = 525
Width = 1215
End
Begin VB.Label Label1
Caption = "Y scale"
Height = 255
Index = 3
Left = 1560
TabIndex = 10
Top = 525
Width = 615
End
Begin VB.Label Label1
Caption = "X scale"
Height = 255
Index = 2
Left = 0
TabIndex = 8
Top = 525
Width = 615
End
Begin VB.Label Label1
Caption = "dt"
Height = 255
Index = 1
Left = 1920
TabIndex = 5
Top = 60
Width = 255
End
Begin VB.Label Label1
Caption = "<= t <="
Height = 255
Index = 0
Left = 645
TabIndex = 1
Top = 60
Width = 495
End
Begin VB.Menu mnuFile
Caption = "&File"
Begin VB.Menu mnuFileExit
Caption = "E&xit"
End
End
End
Attribute VB_Name = "Spiral2Form"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
Option Explicit
Const PI = 3.14159
' ************************************************
' Draw the curve on the indicated picture box.
' ************************************************
Sub DrawCurve(pic As PictureBox, start_t As Single, stop_t As Single, dt As Single, xscale As Single, yscale As Single, theta As Single)
Dim x1 As Single
Dim y1 As Single
Dim x2 As Single
Dim y2 As Single
Dim ctheta As Single
Dim stheta As Single
Dim t As Single
' Save these values because we use them a lot.
stheta = Sin(theta)
ctheta = Cos(theta)
x1 = xscale * X(start_t)
y1 = yscale * Y(start_t)
x2 = x1 * ctheta - y1 * stheta
y2 = x1 * stheta + y1 * ctheta
pic.Cls
pic.CurrentX = x2
pic.CurrentY = y2
t = start_t + dt
Do While t < stop_t
x1 = xscale * X(t)
y1 = yscale * Y(t)
x2 = x1 * ctheta - y1 * stheta
y2 = x1 * stheta + y1 * ctheta
pic.Line -(x2, y2)
t = t + dt
Loop
x1 = xscale * X(stop_t)
y1 = yscale * Y(stop_t)
x2 = x1 * ctheta - y1 * stheta
y2 = x1 * stheta + y1 * ctheta
pic.Line -(x2, y2)
End Sub
' ************************************************
' The parametric function X(t).
' ************************************************
Function X(t As Single) As Single
X = t * t / 350 * Cos(t)
End Function
' ************************************************
' The parametric function Y(t).
' ************************************************
Function Y(t As Single) As Single
Y = t * t / 350 * Sin(t)
End Function
Private Sub CmdGo_Click()
Dim tmin As Single
Dim tmax As Single
Dim dt As Single
Dim xscale As Single
Dim yscale As Single
Dim theta As Single
tmin = CSng(TminText.Text)
tmax = CSng(TmaxText.Text)
dt = CSng(DtText.Text)
xscale = CSng(XscaleText.Text)
yscale = CSng(YscaleText.Text)
theta = CSng(ThetaText.Text) / 180 * PI
DrawCurve Canvas, tmin, tmax, dt, xscale, yscale, theta
End Sub
Private Sub mnuFileExit_Click()
Unload Me
End Sub